package com.sghd.fight.module.game.service.skill.alter;


import com.sghd.pojo.fight.game.UnitValue;

import java.util.HashMap;
import java.util.Map;

/**
 * 值修改类型
 */
@SuppressWarnings("rawtypes")
public enum AlterType {
	// 百分比提升数值属性
	/** 生命 */
	HP(UnitValue.HP, new UnitValueAlter(UnitValue.HP)),
	;

	private static Map<UnitValue, AlterType> map = new HashMap<>(AlterType.values().length);
	static {
		for (AlterType type : AlterType.values()) {
			map.put(type.getKey(), type);
		}
	}

	/** 构造方法 */
	private AlterType(UnitValue key, Alter alter) {
		this.key = key;
		this.alter = alter;
	}

	/** 属性键*/
	private final UnitValue key;
	/** 修改器 */
	private final Alter alter;

	public Alter getAlter() {
		return alter;
	}

	public UnitValue getKey() {
		return key;
	}

	public Object toValue(String value) {
		return alter.toValue(value);
	}

	// Static Method's ...

	/** 按{@link AlterType#getKey()}获取指定的值修改类型 */
	public static AlterType getAlterType(String key) {
		return map.get(UnitValue.valueOf(key));
	}
	
	/** 按{@link AlterType#getKey()}获取指定的值修改类型 */
	public static AlterType getAlterType(UnitValue key) {
		return map.get(key);
	}
	

}
